﻿using Persistencia;
using Dlls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;

namespace UI.Views.Cadastros
{
    /// <summary>
    /// Interaction logic for frmCadastrarFormaPagamento.xaml
    /// </summary>
    public partial class frmCadastrarFormaPagamento : Window
    {
        private Context contexto;
        private int codigo;
        private FormaPagamento fpagamento;
        private FormaPagamentoDLL fpagamentoDLL;
        private int codigoParaAlterarOuDeletar = 0;
        public frmCadastrarFormaPagamento()

        {
           contexto = new Context();
           InitializeComponent();
           fpagamento = new FormaPagamento();
           fpagamentoDLL = new FormaPagamentoDLL();
        }
        private void ChecaParcelas(object sender, RoutedEventArgs e)
        {
            ChecaParcelasSN();
        }

        private void ChecaParcelasSN()
        {
            if (checkPermiteParcelas.IsChecked == true)
            {
                lbParcelas.Visibility = Visibility.Visible;
                txtParcelas.Visibility = Visibility.Visible;
            }
             else if (checkPermiteParcelas.IsChecked == false)
            {
                lbParcelas.Visibility = Visibility.Hidden;
                txtParcelas.Visibility = Visibility.Hidden;

            }
        }

        private void SalvarFPagamento(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtCodigo.Text == "")
                {
                    fpagamento.Descricao = txtNome.Text;
                    fpagamento.ValorMinimo = Convert.ToDecimal(txtValorMinimo.Text);
                    fpagamento.ParcelaSN = checkPermiteParcelas.IsChecked;
                    fpagamento.GeraFinanceiroSN = chkGeraFinanceiro.IsChecked;

                    if (checkPermiteParcelas.IsChecked == true)
                    {
                        fpagamento.Parcelas = int.Parse(txtParcelas.Text);
                    }
                    fpagamentoDLL.Insert(fpagamento);
                    MessageBox.Show("Registro Incluido");
                    fpagamento = new FormaPagamento();
                }
                else if (txtCodigo.Text != "")
                {
                    fpagamento.Descricao = txtNome.Text.ToString();
                    fpagamento.ValorMinimo = decimal.Parse(txtValorMinimo.Text);
                    fpagamento.ParcelaSN = checkPermiteParcelas.IsChecked;
                    fpagamentoDLL.Update(int.Parse(txtCodigo.Text), fpagamento);
                    if (checkPermiteParcelas.IsChecked == true)
                    {
                        fpagamento.Parcelas = int.Parse(txtParcelas.Text);
                    }
                    MessageBox.Show("Registro Atualizado");
                    fpagamento = new FormaPagamento();
                }
                
            }

            catch (Exception)
            {
                MessageBox.Show("Ocorreu um erro ao alterar/incluir o registro , favor verificar antes de continuar");
            }
        }

        private void Novo(object sender, RoutedEventArgs e)
        {
        }

        private void Delete(object sender, RoutedEventArgs e)
        {
            try
            {
                    if (txtCodigo.Text !="")
                    {
                        fpagamentoDLL.Delete(int.Parse(txtCodigo.Text));
                        MessageBox.Show("Registro excluido ");
                    }
                    else
                    {
                        MessageBox.Show("Selecione um registro para excluir");
                    }

             }
                catch (Exception)
                {
                    MessageBox.Show("Não foi possivel excluir o registro , ele pode esta associado a outra conta");
                }
        }

        private void checkPermiteParcelas_Unchecked(object sender, RoutedEventArgs e)
        {
            ChecaParcelasSN();
        }

        private void BuscarFPAGAMENTO(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter )
            {
                ChecaParcelasSN();
                if (txtCodigo.Text.ToString()!= "")
                {
                    codigoParaAlterarOuDeletar = int.Parse(txtCodigo.Text );
                     FormaPagamento fpagamento = fpagamentoDLL.getFPagamento(codigoParaAlterarOuDeletar);

                        if (fpagamento != null)
                        {
                            checkPermiteParcelas.IsChecked = fpagamento.ParcelaSN;
                            txtCodigo.Text = Convert.ToString(fpagamento.Codigo);
                            txtNome.Text = fpagamento.Descricao;
                            txtValorMinimo.Text = Convert.ToString(fpagamento.ValorMinimo);
                            txtParcelas.Text = Convert.ToString(fpagamento.Parcelas);
                            chkGeraFinanceiro.IsChecked = fpagamento.GeraFinanceiroSN;
                        }
                        else
                        {
                            MessageBox.Show("Forma de pagamento não encontrada, favor verificar o numero digitado");
                        }
                }
                else if (txtCodigo.Text.ToString() == "")
                {
                    frmConsultaPadrao consultaPadrao = new frmConsultaPadrao("Formas de Pagamento");
                    consultaPadrao.Owner = this;
                    consultaPadrao.Show();

                }
                
            }
        }
    }
}
